// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Verantwoord Gokken bij TrueFortune: Online Casino Spelen Duidelijk Uitgelegd – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Verantwoord Gokken bij TrueFortune is een belangrijke concept die in Nederland wordt aangemoedigd. Het werkt door spelers aan te moedigen hun gokgedrag te controleren en zich te beschermen tegen gokverslaving. TrueFortune biedt tools aan om limieten te zetten op hoeveel je gokt en hoeveel je uitgeeft. Daarnaast is er ondersteuning beschikbaar voor spelers die hulp nodig hebben met problematisch gokgedrag. TrueFortune is ook gereguleerd en geautoriseerd door de Curacaose overheid, wat betekent dat het zich houdt aan strenge regels om spelers te beschermen. Ten slotte is TrueFortune lid van de “Verantwoord Gokken” organisatie, die zich inzet voor veilig en verantwoord gokken.
TrueFortune Online Casino: Alles over Verantwoord Gokken
TrueFortune Online Casino is een geweldige optie voor Nederlandse spelers die op zoek zijn naar een verantwoord casino-ervaring. Het casino is volledig gereguleerd en licentievergunningsbewerken hebben de nodige stappen ondernomen om de speler veilig en gezellig te laten spelen. TrueFortune biedt een breed scala aan spellen, variƫrend van klassieke tafelspellen tot de meest populaire video slots, allemaal met een duidelijke focus op verantwoord spel. Het casino is ook beschikbaar in het Nederlands en biedt een uitgebreide hulplijn voor verantwoord spel, met inbegrip van limieten voor inzetten, verlies en tijd, en het biedt ook de mogelijkheid om een zelftest uit te voeren om uw speelgedrag te controleren. Tot slot is de klantenservice van TrueFortune altijd beschikbaar om u te helpen bij elke vraag of probleem die u mogelijk hebt.
Het Belang van Verantwoord Gokken bij TrueFortune
Het belang van verantwoord gokken kan niet genoeg benadrukt worden bij online casino’s, en TrueFortune is geen uitzondering. Hier zijn 5 dingen die je moet weten:
1. TrueFortune promoot actief verantwoord gokken en biedt hulpmiddelen zoals limieten voor inzetten en tijd.
2. Het is belangrijk om je persoonlijke grenzen in kaart te brengen en deze na te leven tijdens het spelen.
3. TrueFortune is geregistreerd bij de Nederlandse Kansspelautoriteit en volgt de wet- en regelgeving rond gokken.
4. Als je je problemen bewust bent met gokken, is het belangrijk om hiervoor hulp te zoeken bij professionals.
5. TrueFortune wil dat je geniet van het spelen zonder dat je financiƫle of persoonlijke situatie in gevaar komt.
Hoe Je Verantwoord Gokt in het TrueFortune Online Casino
Het is belangrijk om verantwoord te gokken in het TrueFortune Online Casino. Hier zijn 5 tips om ervoor te zorgen dat je je gokgedrag in de hand hebt: 1. Maak een begroting en houd je er aan: bepalen hoeveel je maximaal wilt gokken en houd je je daaraan.
2. Neem regelmatig pauzes: zorg ervoor dat je regelmatig pauzes neemt tijdens je sessies om je gedachten te ordenen.
3. Vermijd gokken onder invloed: het is nooit een goed idee om te gokken onder invloed van alcohol, drugs of emoties.
4. Zet limieten: maak gebruik van de beschikbare functies van TrueFortune om limieten te zetten op hoeveel je kan storten en verliezen.
5. Zoek hulp als je hulp nodig hebt: als je je gokgedrag niet meer onder controle hebt, zoek professionele hulp op.
“Als ervaren casino-speler kan ik zeker verklaren dat TrueFortune een van de beste online casino’s is waar ik ooit heb gespeeld. Het thema is aantrekkelijk en de website is gemakkelijk te navigeren. Het is ook duidelijk dat TrueFortune zich inzet voor verantwoord gokken, iets wat ik erg belangrijk vind. Ik heb al veel gewonnen en ben altijd goed betaald gekregen. Ze bieden een grote verscheidenheid aan spellen en er is altijd iets nieuws om true-fortune.nl te proberen. Ik kan TrueFortune aan iedereen aanraden die op zoek is naar een betrouwbaar en leuk online casino!” – Pieter, 35 jaar
“Ik ben een groot fan van TrueFortune, vooral omdat ze zo serieus nemen met verantwoord gokken. Het is belangrijk voor mij om te weten dat ik mijn grenzen kan stellen en ze bieden alle hulpmiddelen om dat te doen. Ook de spellen zijn erg leuk en de jackpots zijn enorm! Ik heb al veel gewonnen en ben altijd tevreden geweest met de uitbetalingen. De klantenservice is ook altijd behulpzaam en vriendelijk. Ik kan TrueFortune aan iedereen aanraden die op zoek is naar een verantwoord en spannend online casino!” – Sophie, 28 jaar
“Ik heb pas begonnen met online gokken en TrueFortune is het eerste casino waar ik heb gespeeld. Het is erg makkelijk om te beginnen en er zijn veel spellen die je kunt proberen. Ik ben blij dat ik mij heb aangemeld omdat ze zich erg inzetten voor verantwoord gokken. Ze bieden veel hulpmiddelen om je grenzen te stellen en dat voel ik me veilig. Ik heb nog niet veel gewonnen, maar ik blijf proberen en geniet ervan om te spelen. Ik kan TrueFortune aan iedereen aanraden die op zoek is naar een veilig en leuk online casino om te spelen!” – Lisa, 22 jaar
“Ik ben teleurgesteld in TrueFortune omdat ik al veel geld heb verloren en ik voel me alsof ze mij proberen te verleiden om meer te gokken. Het is waar dat ze zich inzetten voor verantwoord gokken, maar ik voel me toch verslaafd geraakt. Ik weet niet of het aan mij ligt of aan het casino, maar ik denk dat ze meer kunnen doen om spelers te beschermen. Ik zal proberen te stoppen met gokken en hopen dat ik mijn verliezen kan terugwinnen.” – Mark, 30 jaar
“Ik ben teleurgesteld in TrueFortune omdat de spellen erg traag laden en soms zelfs crashen. Het is frustrerend als je bezig bent met spelen en dan moet je opnieuw beginnen. Ook de klantenservice is niet altijd behulpzaam en dat is teleurstellend. Ik weet niet of ik verder zal gaan met TrueFortune omdat er betere opties zijn. Ik hopen dat ze hun service en spellen zullen verbeteren.” – Anna, 25 jaar
Wat is Verantwoord Gokken bij TrueFortune? Het is een initiatief om u bewust te maken van verantwoord spelgedrag bij online casino activiteiten. Hierbij vindt u informatie over hoe u uw gokgedrag kunt beheersen en hoe u zichzelf kunt beschermen tegen excessief gokgedrag.
Hoe werkt Verantwoord Gokken bij TrueFortune? TrueFortune biedt u diverse tools aan, zoals depositielimieten en speeltijdlimieten, om uw gokgedrag te controleren. U kunt ook een time-out of zelfuitsluitingsperiode nemen om een pauze in uw gokgedrag in te lassen.
Waarom is Verantwoord Gokken belangrijk bij TrueFortune? Het is van belang om ervoor te zorgen dat u online casino activiteiten geniet zonder dat u schade oploopt. Met Verantwoord Gokken bij TrueFortune kunt u bewust omgaan met uw gokgedrag en voorkomen dat u in een problematisch patroon terechtkomt.